
可以使用 Docker 部署环境。

以下步骤须在 root 用户下或 docker 组用户下执行

\subsection{拉取 oi-wiki 镜像}

\begin{minted}{bash}
# 以下命令在主机中运行其中一个即可
# Docker Hub 镜像（官方镜像仓库）
docker pull 24oi/oi-wiki
# DaoCloud Hub 镜像（国内镜像仓库）
docker pull daocloud.io/sirius/oi-wiki
# Tencent Hub 镜像（国内镜像仓库）
docker pull ccr.ccs.tencentyun.com/oi-wiki/oi-wiki
\end{minted}

\subsection{运行容器}

\begin{minted}{bash}
# 以下命令在主机中运行
docker run -d -it [image]
\end{minted}

\begin{itemize}
\item 设置 \texttt{[image]} （必须）以设置镜像，如从 Docker Hub 拉取的则为 \texttt{24oi/oi-wiki} ，DaoCloud Hub 拉取的则为 \texttt{daocloud.io/sirius/oi-wiki}
\item 设置 \texttt{--name [name]} （默认空，若想查看容器 id，则输入 \texttt{docker ps} ，若设置请替换 \texttt{[name]} 为自定义的容器名字）以设置容器名字
\item 设置 \texttt{-p [port]:8000} （必须）（不写该语句则默认为不暴露端口，若设置请替换 \texttt{[port]} 为主机端口）以映射容器端口至主机端口（可以在主机使用 \texttt{http://127.0.0.1:[port]} 访问 \textbf{OI Wiki} ）
\end{itemize}

\subsection{使用}

基于 Ubuntu 16.04 部署

进入容器：

\begin{minted}{bash}
# 以下命令在主机中运行
docker exec -it [name] /bin/bash
\end{minted}

若在上述运行容器中去掉 \texttt{-d} ，则可以直接进入容器 bash ，退出后容器停止，加上 \texttt{-d} 则后台运行，请手动停止。上述进入容器针对加上 \texttt{-d} 的方法运行。

特殊用法：

\begin{minted}{bash}
# 以下命令在容器中运行
# 更新 git 仓库
wiki-upd

# 使用我们的自定义主题
wiki-theme

# 构建 mkdocs ，会在 site 文件夹下得到静态页面
wiki-bld

# 构建 mkdocs 并渲染 MathJax ，会在 site 文件夹下得到静态页面
wiki-bld-math

# 运行一个服务器，访问容器中 http://127.0.0.1:8000 或访问主机中 http://127.0.0.1:[port] 可以查看效果
wiki-svr
\end{minted}

退出容器：

\begin{minted}{bash}
# 以下命令在容器中运行
# 退出
exit
\end{minted}

\subsection{停止容器}

\begin{minted}{bash}
# 以下命令在主机中运行
docker stop [name]
\end{minted}

\subsection{启动容器}

\begin{minted}{bash}
# 以下命令在主机中运行
docker start [name]
\end{minted}

\subsection{重启容器}

\begin{minted}{bash}
# 以下命令在主机中运行
docker restart [name]
\end{minted}

\subsection{删除容器}

\begin{minted}{bash}
# 以下命令在主机中运行
# 删除前请先停止容器
docker rm [name]
\end{minted}

\subsection{更新镜像}

重新再 \texttt{pull} 一次即可，通常不会更新

\subsection{删除镜像}

\begin{minted}{bash}
# 以下命令在主机中运行
# 删除前请先删除使用 oi-wiki 镜像构建的容器
docker rmi [image]
\end{minted}

\subsection{疑问}

如果您有疑问，欢迎提出 issue ！
